1. Technical Field
The present invention relates in general to a system and method for authenticating software. More particularly, the present invention relates to a system and method for using a master key and hidden intermediate keys located on a computer system for authenticating software.
2. Description of the Related Art
In our modern society, software is increasingly becoming one of the most valuable technologies. Software controls devices, such as appliances, automobiles, telephones, and especially computer systems. Computer systems exist in a variety of forms. These forms include traditional desktop and notebook computers, as well as pervasive computing devices such as mobile telephones, and personal digital assistants (PDAs). In addition, software is used for entertainment purposes, such as games designed for personal computers as well as games designed for specialized gaming devices.
Large amounts of time, money, and resources are dedicated towards creating software. Many companies derive all or most of their income from creating software. Software programs sold by these companies include customized software that is written for particular environment or client, as well as off-the-shelf software that is designed in written for larger group of users.
Because software is so valuable, and because computers make it easy to create an exact copy of a program, software piracy is widespread. Software pirates range from individual computer users to professionals who deal wholesale with stolen software. Software piracy exists in homes, schools, businesses, and governments.
Anti-piracy measures that have previously been employed include encrypting the software program. In this manner, the user is provided with a “key” for opening the software along with the encrypted software program. Only a user with the right key can decrypt the software. A challenge of this method, however, is that experienced hackers can analyze the memory containing the executable form of the decrypted code and create a non-encrypted version. The non-encrypted version can then be distributed to others who no longer need to use the “key” to open the software.
Another anti-piracy measure is to use a device, often called a “dongle,” that must be used in order for the software to operate. The device includes a key that is checked by the software before the software will operate. One challenge of this method is that users are often forced to have several devices that they must attach to computers prior to loading the software program. Another challenge is that experienced hackers can read the key being provided by the attached device and create a copy of the device or provide the key value using another software program.
FIG. 1 is a block diagram showing how a hacker monitors a system bus to illegally copy program data in the prior art. Computer system 100 includes system memory 110 and processing core 130 that are interconnected with system bus 125. System memory 110 is where software program and data 120 are stored, typically after being read from a nonvolatile storage area, such as a disk drive or a nonvolatile memory. Protected area 130 is a packaged component that includes one or more central processing units (CPUs) 135 and a small amount of storage 140 that is used for program storage 145 and data storage 150. Storage 140 may include registers, RAM, and other types of memory. Because of size constraints of the protected area package, the amount of storage 140 is typically far less than the amount of memory included in system memory 110, and is usually insufficient to contain a complete working copy of the software program and data. This then requires the software code and data to reside in executable form in system memory 110.
Even if the source of the software stored in system memory 110 is encrypted, the program and data must first be decrypted before it can be processed by the CPUs. A hacker may then use a hacking, or snooping, tool 170 in order to capture an executable form of the software program and data during this decryption process. The hacker's snooping tool monitors the decrypted data that flows over the system bus from the protected area to the system memory (step 175) and copies the data (step 180), creating illegal copy 190. Illegal copy 190 is not encrypted (even if the original program was encrypted) and can be executed on any computer system that is compatible with the software.
Encryption and authentication keys are generally more susceptible of being hacked by a hacker the more times the hacker is able to view the results of using the encryption or authentication keys. The hacker is able to use algorithms and other techniques to identify an encryption key that remains constants. These algorithms and techniques tend to be more successful when the hacker has more results to analyze. What is needed, therefore, is a system and method for authenticating software using intermediate keys that are generated using a hidden algorithm that is performed on a hidden master key in order to limit the hacker's ability to analyze results based upon the master key.